package br.com.jmed.model;

import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
import java.util.List;


/**
 * The persistent class for the prontuario_procedimentos database table.
 * 
 */
@Entity
@Table(name="prontuario_procedimentos")
@NamedQueries({@NamedQuery(name="ProntuarioProcedimento.findProntuarioProcedimentoByProntuario",query="SELECT pp FROM ProntuarioProcedimento AS pp WHERE pp.situacao = 'A' AND pp.prontuario.codigo = :prontuario"),
	@NamedQuery(name="ProntuarioProcedimento.quantidadeFilhos",query="SELECT COUNT(mat)+COUNT(mdc)+COUNT(med)+COUNT(out) FROM ProntuarioProcedimento pp LEFT JOIN pp.prontuarioProcedimentosMateriais mat " +
			"LEFT JOIN pp.prontuarioProcedimentosMedicamentos mdc LEFT JOIN pp.prontuarioProcedimentosMedicos med LEFT JOIN pp.prontuarioProcedimentosOutrosProfissionais out WHERE pp.codigo = :codigo")})
public class ProntuarioProcedimento implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer codigo;

    @Temporal( TemporalType.TIMESTAMP)
	@Column(name="data_alteracao")
	private Date dataAlteracao;

    @Temporal( TemporalType.TIMESTAMP)
	@Column(name="data_fim")
	private Date dataFim;

    @Temporal( TemporalType.TIMESTAMP)
	@Column(name="data_inclusao")
	private Date dataInclusao;

    @Temporal( TemporalType.TIMESTAMP)
	@Column(name="data_inicio")
	private Date dataInicio;

	private String observacoes;

	private String situacao;

	//uni-directional many-to-one association to Procedimento
    @ManyToOne
	@JoinColumn(name="procedimento")
	private Procedimento procedimento;

	//bi-directional many-to-one association to Prontuario
    @ManyToOne
	@JoinColumn(name="prontuario")
	private Prontuario prontuario;

	//uni-directional many-to-one association to Usuario
    @ManyToOne
	@JoinColumn(name="usuario_inclusao")
	private Usuario usuarioInclusao;

	//uni-directional many-to-one association to Usuario
    @ManyToOne
	@JoinColumn(name="usuario_alteracao")
	private Usuario usuarioAlteracao;

	//bi-directional many-to-one association to ProntuarioProcedimentosMateriai
	@OneToMany(mappedBy="prontuarioProcedimento", fetch=FetchType.LAZY)
	private List<ProntuarioProcedimentosMateriai> prontuarioProcedimentosMateriais;

	//bi-directional many-to-one association to ProntuarioProcedimentosMedicamento
	@OneToMany(mappedBy="prontuarioProcedimento", fetch=FetchType.LAZY)
	private List<ProntuarioProcedimentosMedicamento> prontuarioProcedimentosMedicamentos;

	//bi-directional many-to-one association to ProntuarioProcedimentosMedico
	@OneToMany(mappedBy="prontuarioProcedimento", fetch=FetchType.LAZY)
	private List<ProntuarioProcedimentosMedico> prontuarioProcedimentosMedicos;

	//bi-directional many-to-one association to ProntuarioProcedimentosOutrosProfissionai
	@OneToMany(mappedBy="prontuarioProcedimento", fetch=FetchType.LAZY)
	private List<ProntuarioProcedimentosOutrosProfissionai> prontuarioProcedimentosOutrosProfissionais;

    public ProntuarioProcedimento() {
    }

	public Integer getCodigo() {
		return this.codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public Date getDataAlteracao() {
		return this.dataAlteracao;
	}

	public void setDataAlteracao(Date dataAlteracao) {
		this.dataAlteracao = dataAlteracao;
	}

	public Date getDataFim() {
		return this.dataFim;
	}

	public void setDataFim(Date dataFim) {
		this.dataFim = dataFim;
	}

	public Date getDataInclusao() {
		return this.dataInclusao;
	}

	public void setDataInclusao(Date dataInclusao) {
		this.dataInclusao = dataInclusao;
	}

	public Date getDataInicio() {
		return this.dataInicio;
	}

	public void setDataInicio(Date dataInicio) {
		this.dataInicio = dataInicio;
	}

	public String getObservacoes() {
		return this.observacoes;
	}

	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}

	public String getSituacao() {
		return this.situacao;
	}

	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}

	public Procedimento getProcedimento() {
		return this.procedimento;
	}

	public void setProcedimento(Procedimento procedimento) {
		this.procedimento = procedimento;
	}
	
	public Prontuario getProntuario() {
		return this.prontuario;
	}

	public void setProntuario(Prontuario prontuario) {
		this.prontuario = prontuario;
	}
	
	public Usuario getUsuarioInclusao() {
		return this.usuarioInclusao;
	}

	public void setUsuarioInclusao(Usuario usuarioInclusao) {
		this.usuarioInclusao = usuarioInclusao;
	}
	
	public Usuario getUsuarioAlteracao() {
		return this.usuarioAlteracao;
	}

	public void setUsuarioAlteracao(Usuario usuarioAlteracao) {
		this.usuarioAlteracao = usuarioAlteracao;
	}
	
	public List<ProntuarioProcedimentosMateriai> getProntuarioProcedimentosMateriais() {
		return this.prontuarioProcedimentosMateriais;
	}

	public void setProntuarioProcedimentosMateriais(List<ProntuarioProcedimentosMateriai> prontuarioProcedimentosMateriais) {
		this.prontuarioProcedimentosMateriais = prontuarioProcedimentosMateriais;
	}
	
	public List<ProntuarioProcedimentosMedicamento> getProntuarioProcedimentosMedicamentos() {
		return this.prontuarioProcedimentosMedicamentos;
	}

	public void setProntuarioProcedimentosMedicamentos(List<ProntuarioProcedimentosMedicamento> prontuarioProcedimentosMedicamentos) {
		this.prontuarioProcedimentosMedicamentos = prontuarioProcedimentosMedicamentos;
	}
	
	public List<ProntuarioProcedimentosMedico> getProntuarioProcedimentosMedicos() {
		return this.prontuarioProcedimentosMedicos;
	}

	public void setProntuarioProcedimentosMedicos(List<ProntuarioProcedimentosMedico> prontuarioProcedimentosMedicos) {
		this.prontuarioProcedimentosMedicos = prontuarioProcedimentosMedicos;
	}
	
	public List<ProntuarioProcedimentosOutrosProfissionai> getProntuarioProcedimentosOutrosProfissionais() {
		return this.prontuarioProcedimentosOutrosProfissionais;
	}

	public void setProntuarioProcedimentosOutrosProfissionais(List<ProntuarioProcedimentosOutrosProfissionai> prontuarioProcedimentosOutrosProfissionais) {
		this.prontuarioProcedimentosOutrosProfissionais = prontuarioProcedimentosOutrosProfissionais;
	}
	
}